package com.csun.cmny.provider.model.enums.watch;

import com.csun.cmny.provider.model.enums.device.DmcDeviceStatusEnum;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-01-20 14:04
 * @Description:
 */
public enum WatchTimeZoneEnum {

    /**
     * Enable uac user status enum.
     */
    /*
     * 西12区
     */
    TIME_ZONE_W_12("-12", "西12区"),

    /*
     * 西11区
     */
    TIME_ZONE_W_11("-11", "西11区"),

    /*
     * 西10区
     */
    TIME_ZONE_W_10("-10", "西10区"),

    /*
     * 西9区
     */
    TIME_ZONE_W_9("-9", "西9区"),

    /*
     * 西8区
     */
    TIME_ZONE_W_8("-8", "西8区"),

    /*
     * 西7区
     */
    TIME_ZONE_W_7("-7", "西7区"),

    /*
     * 西6区
     */
    TIME_ZONE_W_6("-6", "西6区"),

    /*
     * 西5区
     */
    TIME_ZONE_W_5("-5", "西5区"),

    /*
     * 西4半区
     */
    TIME_ZONE_W_4_5("-4.5", "西4半区"),

    /*
     * 西4区
     */
    TIME_ZONE_W_4("-4", "西4区"),

    /*
     * 西3半区
     */
    TIME_ZONE_W_3_5("-3.5", "西3半区"),

    /*
     * 西3区
     */
    TIME_ZONE_W_3("-3", "西3区"),

    /*
     * 西2区
     */
    TIME_ZONE_W_2("-2", "西2区"),

    /*
     * 西1区
     */
    TIME_ZONE_W_1("-1", "西1区"),

    /*
     * 0时区
     */
    TIME_ZONE_0("0", "0时区"),

    /**
     * 东1区
     */
    TIME_ZONE_E_1("+1", "东1区"),

    /**
     * 东2区
     */
    TIME_ZONE_E_2("+2", "东2区"),

    /**
     * 东3区
     */
    TIME_ZONE_E_3("+3", "东3区"),

    /**
     * 东3半区
     */
    TIME_ZONE_E_3_5("+3.5", "东3半区"),

    /**
     * 东4区
     */
    TIME_ZONE_E_4("+4", "东4区"),

    /**
     * 东4半区
     */
    TIME_ZONE_E_4_5("+4.5", "东4半区"),

    /**
     * 东5区
     */
    TIME_ZONE_E_5("+5", "东5区"),

    /**
     * 东5半区
     */
    TIME_ZONE_E_5_5("+5.5", "东5半区"),

    /**
     * 加德满都
     */
    TIME_ZONE_E_5_7_5("+5.75", "加德满都"),

    /**
     * 东6区
     */
    TIME_ZONE_E_6("+6", "东6区"),

    /**
     * 东7区
     */
    TIME_ZONE_E_7("+7", "东7区"),

    /**
     * 东8区
     */
    TIME_ZONE_E_8("+8", "东8区"),

    /**
     * 东9区
     */
    TIME_ZONE_E_9("+9", "东9区"),

    /**
     * 东10区
     */
    TIME_ZONE_E_10("+10", "东10区"),

    /**
     * 东11区
     */
    TIME_ZONE_E_11("+11", "东11区"),

    /**
     * 东12区
     */
    TIME_ZONE_E_12("+12", "东12区"),

    /**
     * 东13区
     */
    TIME_ZONE_E_13("+13", "东13区"),;

    /**
     * The Key.
     */
    String key;
    /**
     * The Value.
     */
    String value;

    WatchTimeZoneEnum(String key, String value) {
        this.key = key;
        this.value = value;
    }

    /**
     * Gets key.
     *
     * @return the key
     */
    public String getKey() {
        return key;
    }

    /**
     * Gets value.
     *
     * @return the value
     */
    public String getValue() {
        return value;
    }

    /**
     * 获取key获取value
     *
     * @param key key
     *
     * @return value value
     */
    public static String getValue(String key) {
        for (WatchTimeZoneEnum ele : WatchTimeZoneEnum.values()) {
            if (key.equals(ele.getKey())) {
                return ele.getValue();
            }
        }
        return null;
    }

    /**
     * 根据key获取该对象
     *
     * @param key key
     *
     * @return this enum
     */
    public static WatchTimeZoneEnum getEnum(String key) {
        for (WatchTimeZoneEnum ele : WatchTimeZoneEnum.values()) {
            if (key.equals(ele.getKey())) {
                return ele;
            }
        }
        return null;
    }

    /**
     * 获取List集合
     *
     * @return List list
     */
    public static List<WatchTimeZoneEnum> getList() {
        return Arrays.asList(WatchTimeZoneEnum.values());
    }


    /**
     * 获取map类型集合
     *
     * @return Map类型List集合 map 2 list
     */
    public static List<Map<String, String>> getMap2List() {
        List<Map<String, String>> list = Lists.newArrayList();
        for (WatchTimeZoneEnum ele : WatchTimeZoneEnum.values()) {
            Map<String, String> map = Maps.newHashMap();
            map.put("key", ele.getKey());
            map.put("value", ele.getValue());
            list.add(map);
        }
        return list;
    }

}
